<template>
    <div>
      <div class="bg-white grid-content">
        <div style="overflow: hidden; padding-bottom: 8px">
          <div class="mytitle">
            <svg-icon icon-class="yjbb" class="myIcon" />单位用电数据
          </div>
          <div class="myButtons">
            <el-button @click="handleClick('', 'add')">新增</el-button>
            <a :href=token><el-button style="margin: 0 10px;">下载模板</el-button></a>
            <el-button
              class="import-button"
              @click="uploadFiles"
            >
              <i class="icon"></i>
              批量导入
            </el-button>
            <el-dialog title="批量导入" :visible.sync="importDialog" class="dialog-md" width="500px" :before-close="handleClose1">
              <el-form ref="fileForm" label-position="center" style="width: 100%" enctype="multipart/form-data">
                <el-form-item align="center" label="">
                  <el-upload
                    ref="upload"
                    class="uploadDialog"
                    name="myfile"
                    action="string"
                    :http-request="httpRequest"
                    :on-change="handleChange"
                    :on-remove="handleRemove"
                    :limit="1"
                    :file-list="fileList"
                    accept=".xlsx,.xls"
                    :auto-upload="true"
                  >
                    <el-button slot="trigger" size="small" type="primary">上传文件</el-button>
                    <div class="el-upload__tip" style="color: grey;">建议下载模板进行导入</div>
                    <div class="el-upload__tip">1.仅支持上传.xls、.xlsx文件</div>
                    <div class="el-upload__tip">2.文件数据不能超过1000条</div>
  
                  </el-upload>
                </el-form-item>
              </el-form>
              <span slot="footer" class="dialog-footer">
                <el-button size="small" @click="cancelUpload()">取消</el-button>
                <el-button type="primary" size="small" @click="upload()" :disabled="uploading">确定导入</el-button>
              </span>
            </el-dialog>
          </div>
        </div>
        <!-- 表格 -->
        <el-table
          :data="tableData"
          :header-cell-style="{ background: '#F5F7FA', color: '#909399' }"
          border
          stripe
        >
          <el-table-column
            align="center"
            type="index"
            label="序号"
            :index="indexMethod"
            width="60"
            fixed="left"
          >
          </el-table-column>
          <el-table-column align="center" prop="electDate" label="日期">
          </el-table-column>
          <el-table-column align="center" prop="jgmc" label="组织机构">
          </el-table-column>
          <el-table-column align="center" prop="byydl" label="本月用电量">
          </el-table-column>
          <el-table-column align="center" prop="ljydl" label="累计用电量">
          </el-table-column>
          <el-table-column align="center" prop="bydh" label="本月单耗">
          </el-table-column>
          <el-table-column align="center" prop="ljdh" label="累计单耗">
          </el-table-column>
          <el-table-column align="center" prop="remarks" label="备注">
          </el-table-column>
  
          <el-table-column
            align="center"
            prop="approveStatus"
            width="180px"
            fixed="right"
            label="审核"
          >
            <template slot-scope="scope">
              <el-button
                v-if="scope.row.approveStatus == 0"
                @click="handSubmit(scope.row)"
                type="text"
                style="color: orange"
              >提交审核</el-button
              >
              <el-tooltip
                v-else
                :content="scope.row.approveBz"
                placement="right"
                effect="light"
                :disabled="!scope.row.approveBz"
              >
                <el-badge
                  :is-dot="
                    scope.row.approveBz != '' && scope.row.approveBz != null
                  "
                  class="item"
                >
                  <el-tag
                    :class="scope.row.approveBz ? 'tagstyle' : ''"
                    :type="
                      scope.row.approveStatus == '5'
                        ? 'success'
                        : scope.row.approveStatus == '4'
                        ? 'danger'
                        : scope.row.approveStatus == '3'
                        ? ''
                        : scope.row.approveStatus == '2'
                        ? 'danger'
                        : scope.row.approveStatus == '1'
                        ? 'warning'
                        : 'info'
                    "
                    disable-transitions
                  >{{
                      scope.row.approveStatus == "5"
                        ? "管理部通过"
                        : scope.row.approveStatus == "4"
                          ? "管理部未通过"
                          : scope.row.approveStatus == "3"
                            ? "作业区通过待管理部审核"
                            : scope.row.approveStatus == "2"
                              ? "作业区未通过"
                              : scope.row.approveStatus == "1"
                                ? "已上报待作业区审核"
                                : "待上报"
                    }}</el-tag
                  >
                </el-badge>
              </el-tooltip>
            </template>
          </el-table-column>
  
          <el-table-column align="center" label="操作" width="140" fixed="right">
            <template slot-scope="scope">
              <el-button
                @click="handleClick(scope.row, 'check')"
                type="text"
                style="color: #2ec02e"
              >查看</el-button
              >
              <el-button @click="handleClick(scope.row, 'edit')" type="text"
              >编辑</el-button
              >
              <el-button
                @click="handleDelete(scope.row)"
                type="text"
                style="color: red"
              >删除</el-button
              >
            </template>
          </el-table-column>
        </el-table>
        <!-- 分页器 -->
        <el-pagination
          align="right"
          background
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="pageNo"
          :page-sizes="[5, 10, 20, 30, 40, 50]"
          :page-size="pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total"
        >
        </el-pagination>
      </div>
  
      <!-- 弹出框 -->
      <el-dialog
        :title="myDialogTitle"
        :visible.sync="dialogFormVisible"
        :before-close="handleClose"
        custom-class="saveAsDialog"
      >
        <el-form
          :inline="true"
          :model="dwydsjForm"
          class="demo-form-inline"
          :rules="rules"
          ref="dwydsjForm"
          :disabled="isInput"
          label-position="left"
          label-width="140px"
        >
          <!-- <el-divider content-position="left">基础信息</el-divider> -->
          <el-row>
            <el-col :span="12">
              <el-form-item label="日期:" prop="electDate">
                <el-date-picker
                  v-model="dwydsjForm.electDate"
                  align="right"
                  type="date"
                  placeholder="请选择日期"
                  value-format="yyyy-MM-dd"
                  :picker-options="pickerOptions"
                >
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="12">
                <el-form-item label="所属机构:" prop="orgId">
                <el-select v-model="dwydsjForm.orgId" placeholder="请选择所属机构" filterable>
                            <el-option
                                v-for="(item,index) in jgList"
                                :key="item.jgid"
                                :label="item.jgmc"
                                :value="item.jgid"
                            />
                        </el-select>
                </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="本月用电量:">
                <el-input
                  v-model="dwydsjForm.byydl"
                  placeholder="请输入本月用电量"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="累计用电量:">
                <el-input
                  v-model="dwydsjForm.ljydl"
                  placeholder="请输入累计用电量"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="本月单耗:">
                <el-input
                  v-model="dwydsjForm.bydh"
                  placeholder="请输入本月单耗"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="累计单耗:">
                <el-input
                  v-model="dwydsjForm.ljdh"
                  placeholder="请输入累计单耗"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="备注:">
                <el-input
                  v-model="dwydsjForm.remarks"
                  placeholder="请输入备注"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>

        </el-form>
  
        <div slot="footer" class="dialog-footer" v-show="!ischeck">
          <el-button @click="close('dwydsjForm')">取 消</el-button>
          <el-button type="primary" @click="submitForm('dwydsjForm')"
          >确 定</el-button
          >
        </div>
      </el-dialog>
    </div>
  </template>
  
  <script>
  import axios from "axios";
  import { getToken } from "@/utils/auth";
  import dwydsjApi from "@/api/jcsj/scgl/dwydsj/dwydsj";
  import zzjgApi from '@/api/jcsj/jcsy/zzjg';

  
  export default {
    data() {
      return {
        leve: "",
        // show:false,//隐藏序列
        pageNo: 1, //当前页码
        pageSize: 10, //每页显示数量
        total: 0, //总数量
        // table数据
        tableData: [],
        //当前页码
        currentPage: 1,
        //表单填报的数据
        dwydsjForm: {
            electDate: "", //日期
            orgId: "", //组织机构ID
            byydl: "", //本月用电量
            ljydl: "", //累计用电量
            bydh: "", //本月单耗
            ljdh: "", //累计单耗
            remarks: "", //备注
            approveStatus: "",
            approveBz: "",
        },
        //验证规则
        rules: {
          
        electDate: [
            { required: true, message: "请选择日期", trigger: "blur" },
          ],
          orgId: [
            { required: true, message: "请选择所属机构", trigger: "blur" },
          ],
        },
        //时间快捷选择
        pickerOptions: {
          // disabledDate(time) {
          //   return time.getTime() > Date.now();
          // },
          shortcuts: [
            {
              text: "今天",
              onClick(picker) {
                picker.$emit("pick", new Date());
              },
            },
            {
              text: "昨天",
              onClick(picker) {
                const date = new Date();
                date.setTime(date.getTime() - 3600 * 1000 * 24);
                picker.$emit("pick", date);
              },
            },
            {
              text: "一周前",
              onClick(picker) {
                const date = new Date();
                date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
                picker.$emit("pick", date);
              },
            },
          ],
        },
        //获取当前日期
        currentTime: "",
        //编辑框是否显示
        dialogFormVisible: false,
        //弹出框是否是查看
        ischeck: false,
        //控制查看时不可更改数据
        isInput: false,
        //弹出框标题
        myDialogTitle: "",
        //是否新增
        isadd: true,
        //获取井列表
        jgList:[],
  
        file: null,
        //加载动画
        uploadLoading: false,
        //上传的文件列表
        fileList: [],
        //控制弹出框显示与否
        uploadShowDialog: false,
        //上传地址
        uploadURL: '',
        //loading加载中
        downloadLoading: '',
        importDialog:false,
        fileList:[],
        urlFile:'',
        uploading:true,
        token:'',
      };
    },
    created() {
      this.search();
      this.$data.leve = sessionStorage.getItem("userLeve");
      this.token="http://47.108.251.250:3296/api/dwydsj/downLoadExcel?token="+getToken();
    },
    mounted() {
      this.searchJg();
      this.filterTime();
    },
    methods: {
      /**
       * 查询列表
       */
      async search() {
        // this.pageNo = pageNo; //当前页码
        // this.pageSize = pageSize; //每页显示数量
        //发送查询请求
        let res = await dwydsjApi.getList({
          pageNo: this.pageNo,
          pageSize: this.pageSize,
        });
        //判断是否成功
        if (res.success) {
            console.log("dwyd");
          console.log(res.data);
          //赋值
          this.tableData = res.data.records;
          //总数量
          this.total = res.data.total;
        }
      },
         //查询机构列表
        async searchJg() {
        //发送查询请求
            let res = await zzjgApi.getList({pageNo:-1,pageSize:-1});
            //判断是否成功
            if(res.success){
            console.log(1212);
            console.log(res.data.records);
            console.log('jg'+res.data.records);
            //赋值
            this.jgList = res.data.records;
            console.log(this.jgList);
            //总数量
            }
        },
      onSubmit() {
        console.log("submit!");
      },
      //关闭对话框
      handleClose(done) {
        // 清空表单
        // this.$refs['cybzjcsjForm'].resetFields();
        // 清空表单校验，避免再次进来会出现上次校验的记录
        this.$refs["dwydsjForm"].clearValidate();
        done();
      },
      // 弹框关闭触发
      close(formName) {
        this.dialogFormVisible = false;
        // 清空表单
        // this.$refs[formName].resetFields();
        // 清空表单校验，避免再次进来会出现上次校验的记录
        this.$refs[formName].clearValidate();
      },
  
      submitForm(formName) {
        //表单验证
        this.$refs[formName].validate(async (valid) => {
          if (valid) {
            let res = null;
            console.log("111" + this.dwydsjForm.orgId);
            //判断ID是否为空
            if (this.isadd) {
              console.log(this.dwydsjForm);
              //发送添加请求
              res = await dwydsjApi.add(this.dwydsjForm);
            } else {
              //编辑时重置审核状态
              this.dwydsjForm.approveStatus = 0;
              this.dwydsjForm.approveBz = "";
              //发送修改请求
              res = await dwydsjApi.update(this.dwydsjForm);
            }
            console.log(res);
            //判断是否成功
            if (res.success) {
              this.$message.success(res.message);
              //刷新
              this.search();
              //关闭窗口
              this.dialogFormVisible = false;
            } else {
              console.log(res);
              this.$message.error(res.message);
            }
          }
        });
      },
      handleClick(row, handle) {
        // console.log(row.approveStatus);
        this.dialogFormVisible = true;
        if (handle == "check") {
          this.myDialogTitle = "单位用电数据数据";
          this.ischeck = true;
          this.isInput = true; // 1.表单禁用
          // this.cybzjcsjForm = row
          this.$objCopy(row, this.dwydsjForm); //把当前要编辑的数据复制到数据域，给表单回显
          this.$message({ message: "成功打开", type: "success" });
        } else if (handle == "edit") {
          if (
            row.approveStatus == 0 ||
            row.approveStatus == 2 ||
            row.approveStatus == 4
          ) {
            this.myDialogTitle = "单位用电数据编辑";
            this.ischeck = false;
            this.isadd = false;
            this.isInput = false;
            this.$objCopy(row, this.dwydsjForm); //把当前要编辑的数据复制到数据域，给表单回显
          } else {
            this.dialogFormVisible = false;
            this.$message.error("此状态不可编辑！");
          }
        } else if (handle == "add") {
          // this.dwydsjForm ={}
          this.$resetForm("dwydsjForm", this.dwydsjForm); //清空表单数据
          this.myDialogTitle = "单位用电数据填报";
          this.ischeck = false;
          this.isadd = true;
          this.isInput = false;
        }
      },
  
      //删除行数据
      async handleDelete(row) {
        if (
          row.approveStatus == 0 ||
          row.approveStatus == 2 ||
          row.approveStatus == 4 ||
          this.leve == 999 ||
          this.leve == 1000
        ) {
          let confirm = await this.$myconfirm("确定要删除该数据吗?");
        //   console.log(confirm);
          if (confirm) {
            //发送删除请求
            let res = await dwydsjApi.delete({
              orgId: row.orgId,
              electDate: row.electDate,   
            });
            console.log(res);
            //判断是否成功
            if (res.success) {
              //成功提示
              this.$message.success(res.message);
              //刷新
              this.search();
            } else {
              //失败提示
              this.$message.error(res.message);
            }
          }
        } else {
          this.$message.error("此状态不可删除！");
        }
      },
      //批量删除
      handleSelectionChange(val) {
        this.multipleSelection = val;
        console.log(this.multipleSelection);
      },
      async handleBDelete() {
        //判断是否可以删除
        //确认是否删除
        let confirm = await this.$myconfirm("确定要删除该数据吗?");
        console.log(confirm);
        var ids = [];
        if (confirm) {
          for (let j = 0; j < this.multipleSelection.length; j++) {
            if (this.multipleSelection[j].approveStatus == 2) {
              //提示不能删除
              console.log(this.multipleSelection[j].approveStatus);
              this.$message({ message: "有已通过数据不可删除！", type: "error" });
              return;
            }
            ids[j] = this.multipleSelection[j].id;
          }
          console.log("ids", ids);
          // const ids = ids.toString();
          // console.log("ids",ids)
          //发送删除请求
          console.log("111");
          let res = await xcwxApi.Bdelete(ids);
          console.log("222");
          console.log(res);
          //判断是否成功
          if (res.success) {
            //成功提示
            this.$message.success(res.message);
            //刷新
            this.search();
          } else {
            //失败提示
            this.$message.error(res.message);
          }
        }
      },
      //上报
      handSubmit(row) {
        this.$confirm("确定提交审核?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning",
        })
          .then(async () => {
            let res = null;
            this.$objCopy(row, this.dwydsjForm);
            //审核
            this.dwydsjForm.approveStatus = 1;
            console.log(this.dwydsjForm);
            res = await dwydsjApi.update(this.dwydsjForm);
  
            console.log(res);
            //判断是否成功
            if (res.success) {
              // this.$message.success(res.message);
              this.$message({ message: "提交审核成功！", type: "success" });
              //刷新
              this.search();
            } else {
              console.log(res);
              this.$message.error(res.message);
            }
          })
          .catch(() => {
            this.$message({
              type: "info",
              message: "已取消",
            });
          });
      },
      //批量导入部分
      handleClose1(done) {
        this.urlFile = ''
        this.fileList =[];
        done()
      },
      uploadFiles() {
        this.importDialog = true
        this.urlFile = ''
      },
      cancelUpload(){
        this.urlFile = ''
        this.fileList = [];
        this.importDialog = false
      },
      //  监听改变
      handleChange(file, fileList) {
        this.fileList = fileList
      },
      // 移除
      handleRemove(file, fileList) {
        this.fileList = fileList
      },
      beforeAvatarUpload(file) {
        //1MB=1024*1024(1MB=1024KB 1KB=1024MB)
        const is10M = file.size / 1024 / 1024 < 10;
        //限制文件上传大小
        if (!is10M) {
          this.$message.error("上传图片大小不能超过 10MB!");
          return false
        }
        return true
      },
  
      httpRequest(param) {
        // console.log(param.file);
        this.uploading = true;
        const File = this.fileList[0].raw;
        // const File = param.file
        // console.log(File);
        // console.log(this.fileList);
        let formData = new FormData();
        formData.append("myfile", File);
        console.log(formData.get("myfile"));
  
        axios({
          url: "http://47.108.251.250:3296/api/fileAbout/fileUpload",
          method: "post",
          headers: {
            "token": getToken(),
            "Content-Type": "multipart/form-data",
          },
          data: formData,
        }).then(
          (response) => {
            if (response.data.success === true && response.data.data!=="") {
              console.log(response.data);
              this.urlFile = response.data.data;
              console.log(this.urlFile);
              this.$message.success(response.data.message);
              param.onSuccess();
              this.uploading = false;
            }else{
              this.$message.error('上传失败');
            }
          },
          (error) => {
            console.log(error);
            this.$message.error('上传失败');
          }
        );
      },
      //文件导入
      upload(){
        let formData = new FormData();
        formData.append("filePath",this.urlFile);
        console.log(formData.get("filePath"));
        axios({
          url: "http://47.108.251.250:3296/api/dwydsj/batchInput",
          method: "post",
          headers: {
            "token": getToken(),
            "Content-Type": "multipart/form-data",
          },
          data: formData,
        }).then(
          (response) => {
            if (response.data.success === true) {
              console.log(response.data);
              this.$message.success(response.data.message);
              //刷新
              this.search();
              //关闭窗口
              this.importDialog = false;
              this.fileList = [];
            }else{
              this.$message.error('导入失败');
            }
          },
          (error) => {
            console.log(error);
            this.$message.error('导入失败');
          }
        );
      },
  
  
      //下载模板
      downloadExcel(){
        console.log("下载！！！");
        window.open("http://47.108.251.250:3296/api/dwydsj/downLoadExcel?token="+getToken());
      },
  
      /*** 当每页数量发生变化时触发该事件 */
      handleSizeChange(size) {
        console.log(size);
        this.pageSize = size;
        //将每页显示的数量交给成员变量
        this.search(this.pageNo, size);
      },
      /*** 当页码发生变化时触发该事件 */
      handleCurrentChange(page) {
        console.log(page);
        this.pageNo = page;
        //调用查询方法
        this.search(page, this.pageSize);
      },
      // 序号计算
      indexMethod(index) {
        // index默认在0开始，这里+1
        return index + 1 + (this.pageNo - 1) * this.pageSize;
      },
      // 获取当前日期
      filterTime() {
        var date = new Date();
        var y = date.getFullYear();
        var m = date.getMonth() + 1;
        m = m < 10 ? "0" + m : m;
        var d = date.getDate();
        d = d < 10 ? "0" + d : d;
        this.currentTime = y + "-" + m + "-" + d;
        // console.log(typeof(new Date(this.currentTime)));
      },
    },
  };
  </script>
  
  <style lang="scss" scoped>
  // 标题
  .mytitle {
    font-size: large;
    padding-left: 10px;
    margin-bottom: 16px;
    float: left;
  }
  
  //按钮组
  .myButtons {
    float: right;
  }
  
  //格子的样式
  .bg-white {
    background: #ffffff;
  }
  
  .grid-content {
    padding: 10px;
    margin-bottom: 10px;
    border-radius: 4px;
  }
  
  .calendar ::v-deep .el-button-group::before {
    display: none;
  }
  
  .calendar ::v-deep .el-button-group::after {
    display: none;
  }
  
  // 分割线样式
  .el-divider--horizontal {
    display: block;
    height: 2px;
    width: 100%;
    margin: 24px 0;
  }
  
  // 表单各项的样式
  .el-form-item {
    margin: 15px 10px 15px 10px;
  }
  
  //表单禁用字体样式
  .el-input.is-disabled ::v-deep .el-input__inner {
    color: #606266;
  }
  //对话框宽度
  // .customWidth{
  //         width:80%;
  //     }
  ::v-deep .saveAsDialog {
    width: 50% !important;
  }
  
  ::v-deep .el-table .cell {
    overflow: unset;
  }
  //日期选择框宽度
  .el-date-editor.el-input,
  .el-date-editor.el-input__inner {
    width: 200px;
  }
  
  .el-input {
    width: 200px;
  }
  
  .tagstyle {
    cursor: pointer;
  }
  </style>
  